﻿#region Header

// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
//     <version>$Revision: 915 $</version>
// </file>

#endregion Header

namespace ICSharpCode.TextEditor.Document
{
    using System.Collections.Generic;

    /// <summary>
    /// A simple folding strategy which calculates the folding level
    /// using the indent level of the line.
    /// </summary>
    public class IndentFoldingStrategy : IFoldingStrategy
    {
        #region Methods

        public List<FoldMarker> GenerateFoldMarkers(IDocument document, string fileName, object parseInformation)
        {
            List<FoldMarker> l = new List<FoldMarker>();
            Stack<int> offsetStack = new Stack<int>();
            Stack<string> textStack = new Stack<string>();
            //int level = 0;
            //foreach (LineSegment segment in document.LineSegmentCollection) {
            //
            //}
            return l;
        }

        int GetLevel(IDocument document, int offset)
        {
            int level = 0;
            int spaces = 0;
            for (int i = offset; i < document.TextLength; ++i) {
                char c = document.GetCharAt(i);
                if (c == '\t' || (c == ' ' && ++spaces == 4)) {
                    spaces = 0;
                    ++level;
                } else {
                    break;
                }
            }
            return level;
        }

        #endregion Methods
    }
}